package com.lyz.dataStructure.JianZhiOffer;/**
 * @Author:759057893@qq.com Lyz
 * @Date: ${Date} 18:30
 * @Description:
 **/

/**
 *@Author:759057893@qq.com Lyz
 *@Date: 2019/6/23 18:30
 *@Description:
 **/

/*
删除链表的倒数第N个节点

解题思路：1. 使用快慢指针，让快指针先走n步，
2 然后在让快慢指针一起走，直到快指针走到尾节点，则慢指针所在的位置就是要删除的倒数第N个节点.
3. 让慢指针所在位置的下一个节点指向才在位置的节点，则删除。
 */
public class Test24 {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode fast = head;
       while (n-- >0){
           fast = fast.next;
       }
        ListNode slow = head;
        if (fast == null) return head.next;
        while (fast.next != null) {
            fast = fast.next;
            slow = slow.next;
        }
        slow.next = slow.next.next;
        return head;
    }
}
